Florian Reichle


Angaben zu den Daten

Das verwendete Dataset des Projekts: https://www.kaggle.com/datasets/gregorut/videogamesales
Dies besteht aus den Daten von https://www.vgchartz.com/ für die Jahre 1980 bis 2016 und umfasst die Folgenden Spalten bzw.Daten.


Inhaltsverzeichnis

  1. Releaseanalyse
  2. Platformanalyse
  3. Publisheranalyse
  4. Genreanalyse
  5. Genreverteilung pro Jahr
  6. Publisher Genres
  7. Kritischer Rückblick

Thesen

Bevor wir mit der Analyse der Daten beginnen können Stellen wir erstmal ein paar Thesen bzw. Fragestellungen auf die wir im laufe des Projekts hinterfragen bzw beantworten wollen.


Daten und Librarys

Nach dem Vorstellen der Daten und dem aufstellen der initialen Thesen können wir nun mit dem einlesen der Daten beginnen.
Zusätzlich erstellen wir noch eine Farbpalette und importieren die Librarys

library(readr)
library(tidyverse)
library(forcats)
library(plotly)
library(knitr, warn.conflicts = FALSE, quietly=TRUE)
library(RColorBrewer)
library(stringr)
library(dygraphs)
library(xts)
suppressPackageStartupMessages(library(dplyr))
myPalette <- brewer.pal(10, "Paired")
vgsales <- read_csv("vgsales.csv")

Video Game Releases

Game Releases over the Years

Game Amount

Unsere erste These war “Welche Jahre sind die besten in der Anzahl der releasten Games und Sales?” Um dieser Fragestellung auf den Grund zugehen müssen wir zuerst einmal die Daten der Tabelle vgsales mithilfe der Funktion group_by(Year) anhand der Jahre Zusammenfassen. Nun erhalten wir eine nach den Jahren zusammengefasste Tabelle deren Einträge wir mit der Funktion dplyr::summarize(Anzahl =n()) abzählen und als Wert Anzahl abspeichern. Aufgrund der für diese analyse Fehlerhaften Daten verwenden wir noch die Funktion filter() um alle fehlenden Jahreseinträge sowie die Jahre 2020 und 2017 herauszufiltern. Letztere Jahre sind daher fehlerhaft, da der Datensatz 2016 erstellt wurde. Diese Daten speichern wir als data.frame in der Variable grouped ab. Im folgenden verwenden wir ebenjenes data.frame um nur die Einträge Jahr und Anzahl zu selektieren und in der Variable filtered abzuspeichern. Die erhaltene Tabelle hat nun zwei Spalten: Jahr und Anzahl. Desweiteren erstellen wir zwei Weitere Variablen ax und ay welche beide eine Liste mit nur einem Attribut sind: “Title”. Nun verwenden wir plot_ly() um mithilfe der type = ‘scatter’ und mode = ‘lines’ Parameter ein Liniendiagramm zu erstellen. Außerdem nutzen wir die layout() funktion um einen titel zu erstellen, sowie mithilfe unsere beiden Variablen ax und ay die Achsen zu beschriften.

grouped <- vgsales  %>%                                 
  group_by(Year) %>%
  dplyr::summarize(Anzahl =n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Anzahl)

ax <- list(
  title = "Year"
)

ay <- list(
  title = "Amount"

)

filtered %>%
plot_ly(x = ~Year, y = ~Anzahl, type = 'scatter', mode = 'lines', fill = 'tozeroy' ,colors = myPalette) %>% 
  layout(title="Game Amount from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Betrachten wir einmal das entstandene Diagramm. Zwischen 1980 und 1993 sind hier kaum unterschiede festzustellen und die Schwankungen können aufgrund der geringen Zahl der Veröffentlichungen (zwischen 14 und 49) vernachlässigt werden.Ab 1993 können wir dann eine stetiges Wachstum feststellen welches 1998 vorerst den höchstwert erreicht. In den Jahren 1999 und 2000 geht die Anzahl erst einmal leicht zurück bevor sich der Wert bis 2002 von 349 auf 829 mehr als verdoppelt. Bis 2004 ist wiederum ein leichter Rückgang festzustellen auf welchem ein Stetiges Wachstum zum Höchstwert von 1428 (2008) sowie 1431 (2009) folgt. Danach folgt ein extremer und mit unterbrechung von 2014 (582) und 2015 (614) stetiger Rückgang in den Releasezahlen auf einen Stand von 344 im Jahr 2016.

Sehen wir uns diese Zahlen einmal genauer an kommt die Frage auf Woran diese Extremen Zahlen in den veröffentlichungen zurückzuführen sind? An diesem Punkt der Analyse können wir nur Spekulieren die Spitzen könnten allerdings an den Veröffentlichungen großer, den Markt bestimmenden Plattformen wie der PS2/3, der Xbox und den Platformen von Nintendo wie Gamecube oder Wii zurückzuführen sein.
Hierzu aber später mehr.

Game Sales

Um dem zweiten Teil der Fragestellung auf den Grund gehen zu können müssen wir erneut die Daten der Tabelle vgsales mithilfe der Funktion group_by(Year) anhand der Jahre Zusammenfassen. Nun erhalten wir wieder die nach den Jahren zusammengefasste Tabelle deren Einträge wir mit der Funktion dplyr::summarize(gr_sum = sum(Global_Sales)) zusammenfassen. Dem Aufmerksamen Leser wird auffallen das hier ein kleiner aber feiner Unterschied zum vorherigen Aufruf besteht. Statt Anzahl =n() nutzen wir hier gr_sum = sum(Global_Sales). Diese Funktion summiert alle Werte der Spalte Global_Sales auf und speichert den den Wert in die Spalte gr_sum. Aufgrund der für diese analyse weiterhin Fehlerhaften Daten verwenden wir erneut die Funktion filter() um alle fehlenden Jahreseinträge sowie die Jahre 2020 und 2017 herauszufiltern. Diese Daten speichern wir wieder als data.frame in der Variable grouped ab. Im folgenden verwenden wir ebenjenes data.frame um nur die Einträge Jahr und gr_sum zu selektieren und in der Variable filtered abzuspeichern. Die erhaltene Tabelle hat nun zwei Spalten: Jahr und gr_sum. Desweiteren erstellen wir erneut die Variablen ax und ay. Nun verwenden wir plot_ly() um mithilfe der type = ‘scatter’ und mode = ‘lines’ Parameter ein Liniendiagramm zu erstellen. Außerdem nutzen wir die layout() funktion um einen titel zu erstellen, sowie mithilfe unsere beiden Variablen ax und ay die Achsen zu beschriften.

grouped <- vgsales  %>%                                 
  group_by(Year) %>%
  dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,gr_sum)

ax <- list(
  title = "Year"
)

ay <- list(
  title = " Game Sales per Year (in mio)"

)

filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'lines', fill = 'tozeroy' ,colors = myPalette) %>% 
  layout(title="Game Sales from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Betrachten wir nun das entstandene Diagramm fällt uns zuerst auf, dass es dem vorherigen recht ähnlich sieht. Dies ist kaum verwunderlich und stellt keinen nennenswerten Wissensgewinn da. Der wohl Nenneswerteste unterschied ist das Fehlen des Anstiegs, welcher in der Anzahl der Gamereleases zum Jahr 2015 festzustellen war. Durch den direkten Vergleich ist dies allerdings ein guter Zeitpunkt um uns mit unserer Zweiten These auseinanderzusetzen. “Werden heutzutage mehr Spiele Releast und Verkauft als noch 1980?”. Diese sehen wir aufjedenfall bestätigt obwohl Festzustellen ist, dass die besten Jahre sowohl in verkäufen als auch in der Anzahl die Jahre 2008 und 2009 waren. Dies Wirft natürlich die Frage auf was der Grund für diesen Verlauf ist und wäre ein Interessanter ansatz für eine weitere Arbeit.

Sales per Game

Die Frage die Wir allerdings beantworten können ist “Werden neuere Spiele automatisch mehr Gekauft?”. Dafür kombinieren wir die beiden bereits Verwendeten ansätze. Wir fassen wieder die daten mithilfe von group_by(Year) anhand der Jahre Zusammen. Die erhaltene Tabelle fassen wir wieder mit dplyr::summarize(gr_sum = sum(Global_Sales)) zusammen. Diesmal nutzen wir jedoch eine kombination aus sum(Global_Sales) und n(). Wir addieren die Spalte Global_Sales, teilen dies durch die Anzahl der Einträge und speichern den Wert in die Spalte gamesales (gamesales = sum(Global_Sales)/n()). Danach filtern wir die Daten erneut und speichern sie als data.frame in grouped ab. Diesmal selektieren wie die Einträge der Spalte Jahr sowie gamesales und speichern sie in der Variable filtered ab. Zuletzt erstellen wir erneut die Variablen ax und ay und verwenden plot_ly() um mithilfe der type = ‘scatter’ und mode = ‘lines’ Parameter ein Liniendiagramm zu erstellen sowie die layout() funktion um einen titel zu erstellen und mithilfe unsere beiden Variablen ax und ay die Achsen zu beschriften.

grouped <- vgsales  %>%                                 
  group_by(Year) %>%
  dplyr::summarize(gamesales = sum(Global_Sales)/n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,gamesales)

ax <- list(
  title = "Year"
)

ay <- list(
  title = "Sales per Game"

)

filtered %>%
plot_ly(x = ~Year, y = ~gamesales, type = 'scatter', mode = 'lines', fill = 'tozeroy' ,colors = myPalette) %>% 
  layout(title="Sales per Game from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Sahen sich die beiden Diagramme für Anzahl und Verkaufszahlen noch recht ähnlich stellt sich hier ein deutlich unterschiedlicher Verlauf da. Ist der Wert zwischen 1980 (1.26) und 1983 (0.98) noch relativ gering steigt dieser Massiv für die Jahre 1984(3.59) und 1985(3.85) bevor er 1986(1.76) und 1987(1.35) wieder absinkt. Genauso schnell wie der wert abgesunken ist steigt er allerdings auch wieder auf 3.14(1988) bevor er 1989 den Höchststand mit 4.32 erreicht. Danach sinkt der wieder ab um sich nach einem kurzen ausschlag 1992 in den Jahren bis 2014 auf einen relativ stetigen Wert Zwischen 0.5 und 0.7 einzupendeln erst 2015 und 2016 sinkt dieser unter 0.5. Diese Extremen ausschläge in den Früheren Jahren lassen sich mit der Geringen anzahl der Spiele erklären. Einzelne gute laufende Spiele machen hier noch einen Großteil des Markts aus wohingegen sich neuere spiele, sowohl gegen eine Großzahl von bereits etablierten Spiele als auch eine große Anzahl neuer Releases, durchsetzen müssen.


Platform Analyse

Viedeospiele gibt es in den Unterschiedlichsten Farben und Formen. Was Sie jedoch alle gemeinsam haben ist, dass sie auf einem medium Gespielt werden. Sei es Sonys Playstation, Microsofts xBox, Nintendos Spielekonsolen wie die Wii oder der einfache desktop PC. Die Frage die Sich jeder Fan jedoch schonmal gestellt hat und über die häufig diskutiert wird ist welche ist die Beste? Da dies immer im Auge des Betrachters liegt versuchen wir zumindestens zu klären Welche Platform ist die beste in Anzahl verkäufen? Welche in Anzahl der Game Releases?. Zum beantworten dieser Frage ist der Vorhandene Datensatz nicht ganz optimal aber hierzu weiteres im Fazit.

Platform Ranking Global

Amount

Um sich einen guten Überblick über die Rankings der Platformen zu verschaffen nutzen wir hier ein Paretodiagramm. Dies sind nach der Größe der Werte sortierte Säulendiagramme. Zum erstellen des Diagramms brauchen wir zuerst einmal wieder unseren Datensatz den wir diesmal mithilfe des group_by Befehls anhand der Platform gruppieren. Danach nutzen wir erneut summarize(Anzahl =n() um die Einträge abzuzählen und den wert als Anzahl abzuspeichern. Um die Einträge der Anzahl nach zu sortieren nutzen wir zuerst den Befehl grouped[order(grouped$Anzahl),decreasing = FALSE] und weisen das Ergebnis der neuen Tabelle Ordered zu. Dieser Befehl sieht relativ komplex aus lässt sich jedoch recht einfach aufdröseln. Order sortiert die Tabelle nach der gegebenen Spalte und der Parameter decreasing = gibt an ob der größte Wert am Anfang oder Ende stehen soll. Das Dollar Zeichen selektiert hierbei die Spalte mit dem dahinterstehenden Name aus der vorher stehenden Tabelle getreu nach dem Schema Tabelle$Spalte. Danach müssen wir noch die Spalte Platform als faktor einlesen welches wir mit dem Befehl as_factor(ordered$Platform) tun. Danach erstellen wir unsere beiden Variablen ax und ay zur Achsenbeschriftung. Nun kommen wir zur eigentlichen Diagrammerstellung. Wir geben die Tabelle ordered weiter an plot_ly() und nutzen add_bars um ein Balkendiagramm zu erstellen. Der unterschied zwischen Balken und Paretodiagramm liegt hierbei in der Parameterübergabe. Schauen wir uns die relevanten Teile einmal genauer an. Der interessante Teil passiert hierbei bei der zuweisung der X-Achse und hier sehen wir auch den Grund für unsere vorherige umwandlung der Spalte Platform zu einem faktor. x=~fct_reorder(Platform,Anzahl, .desc=“true”),y=~Anzahl Wir nutzen den Befehel fct_reorder() um die Platformen nach der Anzahl sortiert her anzuordnen. Der erste Parameter ist hierbei die zu sortierende Spalte, der zweite die nach der sortiert werden soll. Der Parameter .desc steht descending und bestimmt wie sortiert werden soll, in unserem fall der größte Wert zuerst. Zu guter letzt geben wir dem Diagramm noch einen Namen, weisen die Farbpalette zu und setzen das Layout mit dem Titel sowie unseren beiden Achsenbeschriftungen.

grouped <- vgsales  %>% 
  group_by(Platform) %>% 
  summarize(Anzahl =n()) 

ordered <- grouped[order(grouped$Anzahl), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)


ax <- list(
  title = "Platform"
)

ay <- list(
  title = "Anzahl"
)
ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Platform,Anzahl, .desc="true"),
           y=~Anzahl,
           name="Game Amount by Platform" ,colors = myPalette) %>% 
  layout(title="Game Amount by Platform",
         xaxis = ax,
         yaxis = ay
         
         )

Beim Betrachten des Diagramms erkennen wir das weder ganz alte noch ganz neue Platformen die Nase vorne haben. An den ersten beiden Stellen und weit abgeschlagen vom Rest der Platformen finden sich hier der DS von Nintendo (2163) und die Playstation 2 von Sony (2161). Dies ist weiter nicht Verwunderlich da beide auch die Konsolen sind die sich Weltweit am besten verkauft haben. Ein weiterer Grund für deren hohe Spieleanzahl ist vermutlich auch deren Stellung als Platzhirsche im Konsolen- bzw. Handheldmarkt. Weiterhin können wir erkennen das es meist die ältere Generationen einer Konsole sind die mehr Spiele haben. Die Playsatation 2 hat beispielsweise mehr Spiele als PS3 und PS4, die XboX360 mehr als die xBoxOne und der DS mehr als der 3DS. Dies scheint jedoch nicht auf die erste Generation zuzutreffen. Die Playstation hat mehr verkäufe als die PS4 aber weniger als PS3 und PS2. Die Xbox mehr als die XboxOne aber weniger als die Xbox360.

Sales

Schauen wir uns nun die Verkaufszahlen der Spiele der einzelnen Platformen an. Wir verwenden hier wieder ein Paretodiagramm und gehen ähnlich des vorherigen Diagramms vor. Zuerst nutzen wir wieder die group_by Funktion um nach den Platformen zu gruppieren. Da wir nun aber die Verkaufszahlen betrachten wollen nutzen wir summarize() auf die Global_Sales Spalte. Nun nutzen wir die rename() funktion um die so entstandene Spale sum(Global_Sales) in Global_Sales umzubenennen. Dies hat keinen weiteren Nutzen außer uns im späteren Verlauf die Referenzierung der Spalte einfacher zu machen. Um später nach dieser neu erstellten Spalte sortieren zu können müssen wir diese zuerst in einen Vector umwandeln. Dies tun wir mit dem Befehl grouped$Global_Sales<-as_vector(grouped$Global_Sales). Nun können wir die Tabelle sortieren und in der Variable ordered abspeichern ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]. Als letzten Schritt bevor es an die erstellung des Diagramms geht wandeln wir noch die Spalte Platform in einen Factor um ordered$Platform <- as_factor(ordered$Platform) und erstellen erneut unsere Achsenbeschriftungen ax und ay. Zur erstellung des Diagramms übergeben wir unsere ordered Tabelle an die plot_ly() funktion und nutzen add_bars um ein Balkendiagramm zu erstellen. Hier verwenden wir wieder die Parameter x=~fct_reorder(Platform,Global_Sales, .desc=“true”), y=~Global_Sales um den x wert, also die Platformen nach den Global Sales zu sortieren bevor wir den namen und die Farbe des Diagramms setzen. Zu guter Letzt benutzen wir noch die Layout funktion um dem Diagramm einen Titel zu geben und unsere beiden Achsenbeschriftungen zu erstellen.

grouped <- vgsales  %>% 
  group_by(Platform) %>% 
  summarize(sum(Global_Sales))  %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)


ax <- list(
  title = "Platform"
)

ay <- list(
  title = "Global Sales (in mio)"

)


ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Platform,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="Sales Amount by Platform" ,colors = myPalette) %>% 
  layout(title="Sales Amount by Platform",
         xaxis = ax,
         yaxis = ay
         )

Schauen wir uns das Entstandene Diagramm einmal auf fallen uns direkt zwei Dinge auf. Zum einen fehlt der Nintendo DS auf dem Spitzenplatz zusammen mit der PS2 und ist nur auf Platz 5, zum anderen ist der Unterschied zwischen den Spitzenplätzen bzw dem Spitzenplatz und dem rest der top 5 deutlich geringer. Waren es bei der Spieleanzahl noch fast 40% unterschied zwischen platz 1/2 und platz 3-4 so sind es hier nur knapp 20%. Die Restlichen plätze der Top 5 sind allerdings größtenteils gleich geblieben. Zusätzlich zum absacken des Nintendo DS von platz 1 auf platz 5 hat nur die XboX360 ihre Position in der Rangliste verändert.

Haben Ältere Platformen Automatisch mehr Spiele und Verkäufe?

Beim Betrachten beider Diagramme oder sogar nur einem der Diagramme erkennt der Aufmerksame Betrachter relativ schnell das hier keine Pauschalantwort auf diese Fragestellung möglich ist. Dies ist aber irgendwie zu erwarten gewesen es gibt so viele Faktoren die den Erfolg einer bestimmten Platform bestimmen und es ist unmöglich dieses an einem Faktor festzulegen. Wwelche Frage wir allerdings beantworten konnten, zumindestens teilweise, ist die Frage nach der “besten Platform. Die PS2 ist sowohl weit oben in der Spieleanzahl, als auch Spitzenreiter in den Gamverkäufen. Der Nintendo DS ist zwar in der Spieleanzahl sogar knapp vor der PS2 in den verkäufen aber weit abgeschlagen auf Platz 5. Ausschlaggebender als vergleichsargument wäre jedoch die Anzahl der Verkauften Spiele pro Spiel doch weiteres hierzu im Ausblick in die Zukunft

Offensichtlich ist ein Datensatz zu Anzahl der Spieleverkäufe vorallem ein so lückenhafter nicht optimal aber dazu weiteres im Fazit.


Platform Sales nach Region

Da wir nun geklärt haben welche Platformen die Nase vorne haben wäre es doch Interessant herauszufinden ob es Regionale unterschiede gibt. Favorisieren verschiedene Regionen verschiedene Platformen? Verkaufen die Regionenheimischen Platformen automatisch auch die meisten Spiele?

Hierbei können wir natürlich nur die Verkaufszahlen heranziehen. Theoretisch wäre auch ein Vergleich in anzahl der Spiele möglich würde aber diese Arbeit Sprengen da der Datensatz diese Informationen nicht ohne weiteres hergibt. Zum Beantworten dieser Frage benutzen wir erneut Paretodiagramme und um sich einen Groben überblick zu schaffen Kreisdiagramme. Diese haben ihre eigenen Probleme bieten uns aber ein gutes Tool zur groben übersicht über die Prozentualverteilung der Konsolen und bringt etwas Abwechslung in diese bisher sehr Balkendiagramm lastige ausarbeitung.

Einzuwenden hierbei ist, dass die Regionen natürlich unterschiedlich viele Einwohner haben.Ein vergleich der absoluten Saleswerte ist hierbei natürlich nur wenig ausschlaggebend zeigt aber einen generellen beliebtheitstrend der Konsolen in den einzelnen Regionen auf.

Platform Ranking

Balkendiagramme

Die Erstellung der Paretodiagramme werde ich an dieser Stelle nicht mehr genauer erläutern, da das Grundprinzip weiterhin das gleiche bleibt einziger unterschied zwischen den verschiedenen Diagrammen ist hierbei der wert in der summarize Funktion summarize(sum(EU_Sales)) EU_Sales für EU NA_SALES für US und JP_SALES für Japan sowie der Titel und die Achsenbeschriftungen. Eine genauere Erläuterung zur Erstellung von Paretodiagrammen gibt es hier.

Europa

grouped <- vgsales  %>% 
  group_by(Platform) %>% 
  summarize(sum(EU_Sales))  %>%
rename(
    Global_Sales = "sum(EU_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)


ax <- list(
  title = "Platform"
)

ay <- list(
  title = "EU Sales (in mio)"

)


ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Platform,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="EU Sales Amount by Platform" ,colors = myPalette) %>% 
  layout(title="EU Sales Amount by Platform",
         xaxis = ax,
         yaxis = ay
         )

Hatte im Globalen durchschnitt die PS2 noch deutlich die Nase vorne ist in EU die PS3 (343.71) noch vor der PS2 (339.29) und diese haben beide noch einen Recht weiten Vorsprung auf Platz 3 (280.58) und 4 (268.38) welche respektive von der Xbox360 und der Wii belegt werden. Die Playstation 1 (213.6) sichert sich in Europa einen platz in den top 5 und auch die PS4 (123.7) rückt einen Platz nach Vorne. Den wohl größten Sprung legt allerdings der PC (139.68) hin. Ist dieser Global noch auf Platz 10 so belegt er in Europa platz 7. Auch außerhalb der Top 10 gibt es einige verschiebungen aufgrund des eher Geringeren Marketshares sehen wir hier allerdings von einer genaueren Analyse ab. Zusammenfassend können wir also sagen das Europa Sony konsolen sowie den Pc überdurchschnittlich gerne Nutzen.

Nord-Amerika

grouped <- vgsales  %>% 
  group_by(Platform) %>% 
  summarize(sum(NA_Sales))  %>%
rename(
    Global_Sales = "sum(NA_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)


ax <- list(
  title = "Platform"
)

ay <- list(
  title = "NA Sales (in mio)"

)


ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Platform,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="NA Sales Amount by Platform" ,colors = myPalette) %>% 
  layout(title="NA Sales Amount by Platform",
         xaxis = ax,
         yaxis = ay
         )

Im direkten Vergleich mit EU fällt hier sofort ins Auge, dass die Playstation 2 (583.84) zwar weiterhin von dem ersten Platz verdrängt wurde, Microsofts Xbox360 (601.05) hier Sonys Playstation 3 (392.26) allerdings auf dem ersten Platz ablöst. Auch die Wii (507.71) hat erkennbar mehr Verkäufe als noch in Europa. PS4 (96.8) und PC (93.28) spiele verkaufen sich in Nord-Amerika deutlich weniger als in Europa wohingegen die Restlichen Platformen größtenteils Ähnlich verteilt bleiben.

Japan

grouped <- vgsales  %>% 
  group_by(Platform) %>% 
  summarize(sum(JP_Sales))  %>%
rename(
    Global_Sales = "sum(JP_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)


ax <- list(
  title = "Platform"
)

ay <- list(
  title = "JP Sales (in mio)"

)


ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Platform,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="JP Sales Amount by Platform" ,colors = myPalette) %>% 
  layout(title="JP Sales Amount by Platform",
         xaxis = ax,
         yaxis = ay
         )

Japan ist wohl der größte Ausreißer der drei Regionen. Hier führt der Nintendo DS (175.57) die Liste an. Auch der Abstand auf Platz 2 ist hier größer als in den anderen Regionen welcher nicht von der Playstation 2 (Platz 3) sondern der Playstation 1 belegt wird. Weit abgeschlagen ist die PS2 (139.2 mio) von der PS1(139.82) jedoch nicht. Sonys beide Konsolen sind auch die einzigen nicht Nintendo konsolen in den Top 7. Allegemein ist hier ein großer Fokus auf Japanische unternehmen zu erkennen wenn man bedenkt das die erste, nicht japanische konsole, die Xbox 360 (12.43) auf Platz 17 ist. Japanische hersteller sind in der Spieleindustrie weit verbreitet ein so extremes Verhältnis ist Global jedoch nicht die Norm. Schauen wir uns das ganze einmal genauer als Kreisdiagramme an um die Verhältnise etwas deutlicher zu machen.

kreisdiagramme

Da wir bisher noch keine Kreisdiagramme genutzt haben schauen wir uns erst mal die Unterschiede in der Diagrammerstellung an bevor wir uns auf die Analyse ebenjener Diagramme stürzen. Der einfachheit halber schauen wir uns das ganze nur am Beispiel Europa an, die anderen Diagramme unterscheiden sich aber nur in dem Wert in der summarize funktion sowie den Achsen- und der Diagrbeschriftung. Der Grundaufbau der Diagramm erstellung ist hier wieder ähnlich wie bei den Paretodiagrammen. Zuerst gruppieren wir die Daten, sortieren sie nach Anzahl der Verkäufe und erstellen unsere Achsenbeschriftungen. Danach zum interessanten Teil der Diagrammerstellung welcher sich eigentlich auch nicht groß von den Paretodiagrammen unterscheidet. Wir übergeben unsere Sortierten Daten an Plot_ly() und verwenden die Funktion add_pie mit entsprechenden Parametern zur Diagramm erstellung. Diese unterscheiden sich etwas von den Paretodiagrammen. Values sind hierbei die Werte, die die Größe und labels die Bezeichnung der “Kuchenstücke” festlegen. Der letzte interessante Parameter ist textinfo mit welchem Festgelegt wird was als text in den Abschnitten aufgeführt wird. In unserem Beispiel nutzen wir hier textinfo=‘label+percent’ umd sowohl die Bezeichnungen als auch den Genauen Prozentwert anzuzeigen.

Europa

grouped <- vgsales  %>% 
  group_by(Platform) %>% 
  summarize(sum(EU_Sales))  %>%
rename(
    Global_Sales = "sum(EU_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)


ax <- list(
  title = "Platform"
)

ay <- list(
  title = "EU Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Platform,textinfo='label+percent',
           name="EU Sales Amount by Publisher" ,colors = myPalette) %>% 
  layout(title="EU Sales Amount by Publisher",
         xaxis = ax,
         yaxis = ay
         )

Ohne direkte Globale vergleichsdiagramme können wir hier im ersten Schritt noch keine großartigen Aussagen treffen werden aber im späteren Verlauf auf diese eingehen. Was wir hier allerdings gut erkennen Können ist, dass die größten vier Platformen hier 50.5% der Gesamtverkäufe ausmachen und Sonys Konsolen sogar 28%.

Nord-Amerika

grouped <- vgsales  %>% 
  group_by(Platform) %>% 
  summarize(sum(NA_Sales))  %>%
rename(
    Global_Sales = "sum(NA_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)


ax <- list(
  title = "Platform"
)

ay <- list(
  title = "NA Sales (in mio)"

)


ordered%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Platform,textinfo='label+percent',
           name="NA Sales Amount by Publisher" ,colors = myPalette) %>% 
  layout(title="NA Sales Amount by Publisher",
         xaxis = ax,
         yaxis = ay
         )

Beim betrachten des Diagrammes für Amerika sehen wir das die Top 4, welche weiterhin aus XboX360 Wii Ps2 und PS3 bestehen, nur noch 47.53% ausmachen. Größter Verlierer sind hier Sonys Konsolen, welche nur noch 22.23% ausmachen. #### Japan

grouped <- vgsales  %>% 
  group_by(Platform) %>% 
  summarize(sum(JP_Sales))  %>%
rename(
    Global_Sales = "sum(JP_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)


ax <- list(
  title = "Platform"
)

ay <- list(
  title = "JP Sales (in mio)"

)


ordered%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Platform,textinfo='label+percent',
           name="JP Sales Amount by Platform" ,colors = myPalette) %>% 
  layout(title="JP Sales Amount by Platform",
         xaxis = ax,
         yaxis = ay
         )

In Japan machen die Top 4 44.23% aus bestehen aber bis auf die PS2 aus gänzlich anderen Konsolen. Da Sonys PS3 von der PS ersetzt wird halten diese weiterhin 21.6% der Top 4. Nintendo holt sich hier jedoch den Größten Anteil mit 22.63%. Ein vergleich dieser Werte ist jedoch, wie bereits im Vorspann der Platform Rankings erwähnt mit Problemen gehaft. Genaueres hierzu wie bereits erwähnt im Fazit.


Platform Sales im laufe der Jahre

Nachdem wir uns die Platform verteilung angeschaut haben stellt sich die Frage ob es im laufe der Jahre unterschiede in den Verkäufen gibt.

Um uns dies anzuschaun verwenden wir eine neue art der Grafik die wir bisher noch nicht verwendet haben. Zum erstellen der Grafik gruppieren wir zuerst wieder unsere Daten und addieren die werte der Sales pro Jahr und Platform auf. ZUsätzlich zum Filter der ungültigen Jahre filter wir allerdings alle Summen mit weniger als 60 mio in Sales. Dies ist um eine Überladung des Diagramms zu verhindern führt aber zu anderen Problemen. Neu in der erstellung dieses Diagramms sind auch die befehle arrange() und slice(). Arrange sortiert die Tabelle anhand der gegebenen Spalte in unserem fall ist das die Summe der Globalen verkäufe. Slice entfernt alle Spalten bis auf jene, welche wir verwenden wollen. Neu bei der Diagamm erstellung sind hier die Parameter mode = ‘none’ sowie stackgroup = ‘one’ welche die hier zu sehende Grafik erzeugen.

grouped <- vgsales  %>%                                 
  group_by(Year, Platform) %>%
  dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017')  %>% filter(gr_sum>60)%>%
  as.data.frame()
grouped <- grouped %>%arrange(desc(gr_sum)) %>% 
  group_by(Year, Platform) %>%
  slice(1:3)

filtered <- grouped %>% select(Year,Platform,gr_sum)
ax <- list(
  title = "Year"
)

ay <- list(
  title = "Sales per Platform (in mio)"

)


filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', stackgroup = 'one',color = ~Platform ,colors = myPalette)%>% 
  layout(title="Sales per Platform from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Im ersten Moment ist die Grafik sehr verwirrend aber dröseln wir das ganze einmal genauer auf (kurz nach release grüßte verkaufzahlen)


Publisher Vergleich

Nun stellt sich die Frage ob sich neben bestimmten Platformen auch bestimmte Entwickler/Publisher häufen. Hierbei gehen wir davon aus das vermutlich Nintendo und EA die Liste anführen. Hierzu verwenden wir wiederum sorted Bar-Charts und kürzen die Namen um die Begriffe “Entertainment”, “Interactive”, “Game”, “Games” und “Studios” da dies die Namen nur unnötig verlängert und Filtern Publisher mit Geringen Anzahl an Game Releases.

Publisher

Amount

grouped <- vgsales  %>% 
  group_by(Publisher) %>% 
  summarize(Anzahl =n()) %>%  
  filter(Anzahl>100) %>% filter(Publisher!="Unknown")




PublisherSales <- vgsales %>% 
  group_by(Publisher) %>% 
  summarize(sum(Global_Sales)) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% filter(Global_Sales>300)



grouped <- grouped  %>% filter(Publisher %in% PublisherSales$Publisher)


ordered <- grouped[order(grouped$Anzahl), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)


ax <- list(
  title = "Publisher"
)

ay <- list(
  title = "Anzahl"
)
ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Publisher,Anzahl, .desc="true"),
           y=~Anzahl,
           name="Game Amount by Publisher"
           ,colors = myPalette) %>% 
  layout(title="Game Amount by Publisher",
         xaxis = ax,
         yaxis = ay
         
         )

Sales

grouped <- vgsales  %>% 
  group_by(Publisher) %>% 
  summarize(Anzahl =n(),sum(Global_Sales)) %>%
  filter(Anzahl>100) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    )

PublisherSales <- vgsales %>% 
  group_by(Publisher) %>% 
  summarize(sum(Global_Sales)) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% filter(Global_Sales>300)



grouped <- grouped  %>% filter(Publisher %in% PublisherSales$Publisher)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)


ax <- list(
  title = "Publisher"
)

ay <- list(
  title = "Global Sales (in mio)"

)


ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Publisher,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="Sales Amount by Publisher"
           ,colors = myPalette) %>% 
  layout(title="Sales Amount by Publisher",
         xaxis = ax,
         yaxis = ay
         )

Auffällig ist hier die diskrepanz zwischen Anzahl der Spielereleases und Anzahl der Spieleverkäufe. Im gegensatz zu der Anzahl der Spiele (bei dem Nintendo nur auf platz 6 Sitz) dominiert Nintendo im anzahl der Sales.

Nun stellt sich wieder einmal die Frage ob sich dies in Bestimmten teilen der Welt unterscheidet und hierzu verwenden wir wiederum die SortedBar/Piechart kombo und die bereits genannten Filter


Publisher Ranking nach Region

Publisher Ranking nach Region

Balkendiagramme

Europa

grouped <- vgsales  %>% 
  group_by(Publisher) %>% 
  summarize(Anzahl =n(),sum(EU_Sales)) %>%
  filter(Anzahl>100) %>%
rename(
    Global_Sales = "sum(EU_Sales)"
    )

PublisherSales <- vgsales %>% 
  group_by(Publisher) %>% 
  summarize(sum(Global_Sales)) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% filter(Global_Sales>300)



grouped <- grouped  %>% filter(Publisher %in% PublisherSales$Publisher)


grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)


ax <- list(
  title = "Publisher"
)

ay <- list(
  title = "EU Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Publisher,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="EU Sales Amount by Publisher"
           ,colors = myPalette) %>% 
  layout(title="EU Sales Amount by Publisher",
         xaxis = ax,
         yaxis = ay
         )

Nord Amerika

grouped <- vgsales  %>% 
  group_by(Publisher) %>% 
  summarize(Anzahl =n(),sum(NA_Sales)) %>%
  filter(Anzahl>100) %>%
rename(
    Global_Sales = "sum(NA_Sales)"
    )

PublisherSales <- vgsales %>% 
  group_by(Publisher) %>% 
  summarize(sum(Global_Sales)) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% filter(Global_Sales>300)



grouped <- grouped  %>% filter(Publisher %in% PublisherSales$Publisher)

grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)


ax <- list(
  title = "Publisher"
)

ay <- list(
  title = "NA Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Publisher,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="NA Sales Amount by Publisher"
           ,colors = myPalette) %>% 
  layout(title="NA Sales Amount by Publisher",
         xaxis = ax,
         yaxis = ay
         )

Japan

grouped <- vgsales  %>% 
  group_by(Publisher) %>% 
  summarize(Anzahl =n(),sum(JP_Sales)) %>%
  filter(Anzahl>100) %>%
rename(
    Global_Sales = "sum(JP_Sales)"
    )

PublisherSales <- vgsales %>% 
  group_by(Publisher) %>% 
  summarize(sum(Global_Sales)) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% filter(Global_Sales>300)



grouped <- grouped  %>% filter(Publisher %in% PublisherSales$Publisher)

grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)


ax <- list(
  title = "Publisher"
)

ay <- list(
  title = "JP Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Publisher,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="JP Sales Amount by Publisher"
           ,colors = myPalette) %>% 
  layout(title="JP Sales Amount by Publisher",
         xaxis = ax,
         yaxis = ay
         )

Kreisdiagramme

Europa

grouped <- vgsales  %>% 
  group_by(Publisher) %>% 
  summarize(Anzahl =n(),sum(EU_Sales)) %>%
  filter(Anzahl>100) %>%
rename(
    Global_Sales = "sum(EU_Sales)"
    )

PublisherSales <- vgsales %>% 
  group_by(Publisher) %>% 
  summarize(sum(Global_Sales)) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% filter(Global_Sales>300)



grouped <- grouped  %>% filter(Publisher %in% PublisherSales$Publisher)

grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)


ax <- list(
  title = "Publisher"
)

ay <- list(
  title = "EU Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Publisher,
           name="EU Sales Amount by Publisher"
          ,colors = myPalette) %>% 
  layout(title="EU Sales Amount by Publisher",
         xaxis = ax,
         yaxis = ay
         )

Nord-Amerika

grouped <- vgsales  %>% 
  group_by(Publisher) %>% 
  summarize(Anzahl =n(),sum(NA_Sales)) %>%
  filter(Anzahl>100) %>%
rename(
    Global_Sales = "sum(NA_Sales)"
    )

PublisherSales <- vgsales %>% 
  group_by(Publisher) %>% 
  summarize(sum(Global_Sales)) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% filter(Global_Sales>300)



grouped <- grouped  %>% filter(Publisher %in% PublisherSales$Publisher)

grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)


ax <- list(
  title = "Publisher"
)

ay <- list(
  title = "NA Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Publisher,textinfo='label+percent',
           name="NA Sales Amount by Publisher"
          ,colors = myPalette) %>% 
  layout(title="NA Sales Amount by Publisher",
         xaxis = ax,
         yaxis = ay
         )

Japan

grouped <- vgsales  %>% 
  group_by(Publisher) %>% 
  summarize(Anzahl =n(),sum(JP_Sales)) %>%
  filter(Anzahl>100) %>%
rename(
    Global_Sales = "sum(JP_Sales)"
    )

PublisherSales <- vgsales %>% 
  group_by(Publisher) %>% 
  summarize(sum(Global_Sales)) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% filter(Global_Sales>300)



grouped <- grouped  %>% filter(Publisher %in% PublisherSales$Publisher)

grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)


ax <- list(
  title = "Publisher"
)

ay <- list(
  title = "JP Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Publisher,
           name="JP Sales Amount by Publisher"
          ,colors = myPalette) %>% 
  layout(title="JP Sales Amount by Publisher",
         xaxis = ax,
         yaxis = ay
         )

Zwischen EU und US lassen sich hier kaum Unterschiede feststellen in Japan hingegen ist eine verschiebung zu erkennen. Japanische Publisher führen hierbei die Liste an und drängen andere große unternehmen von den Top spots.


Genreverteilung der Videospiele nach Anzahl

Nun schauen wir uns die Genreverteilung von Videospielen an. Hierzu verwenden wir wiederum die Altbekannte sorted Bar/Pie-Chart kombo.

Genre Amount

Balken Diagramm

grouped <- vgsales  %>% 
  group_by(Genre) %>% 
  summarize(Anzahl =n())

grouped$Anzahl<-as_vector(grouped$Anzahl)
ordered <- grouped[order(grouped$Anzahl), decreasing = FALSE]
ordered$Genre <- as_factor(ordered$Genre)


ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Anzahl"

)

ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Genre,Anzahl, .desc="true"),
           y=~Anzahl,
           name="Amount by Genre"
           ,colors = myPalette) %>% 
  layout(title="Amount by Genre",
         xaxis = ax,
         yaxis = ay
         )

Kreis Diagramm

grouped <- vgsales  %>% 
  group_by(Genre) %>% 
  summarize(Anzahl =n())

grouped$Anzahl<-as_vector(grouped$Anzahl)
ordered <- grouped[order(grouped$Anzahl), decreasing = FALSE]
ordered$Genre <- as_factor(ordered$Genre)


ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Anzahl"

)

ordered%>%
  plot_ly() %>% 
  add_pie(values =~Anzahl,labels=~Genre,
           name="Amount by Genre"
          ,colors = myPalette) %>% 
  layout(title="Amount by Genre",
         xaxis = ax,
         yaxis = ay
         )

Hierbei ist zu erkennen das Action und Sports ein Großteil (34%) der Genres ausmachen. Die Frage ist jedoch wie sind die Verkäufe verteilt und beeinflusst die anzahl der Games pro Genre irgendwie die Verkaufszahlen?

Sales Amount

Balken Diagramm

grouped <- vgsales  %>% 
  group_by(Genre) %>% 
  summarize(sum(Global_Sales))  %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Genre,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="Sales by Genre"
           ,colors = myPalette) %>% 
  layout(title="Sales by Genre",
         xaxis = ax,
         yaxis = ay
         )

Kreis Diagramm

grouped <- vgsales  %>% 
  group_by(Genre) %>% 
  summarize(sum(Global_Sales))  %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Genre,
           name="Sales by Genre"
          ,colors = myPalette) %>% 
  layout(title="Sales by Genre",
         xaxis = ax,
         yaxis = ay
        )

Hierbei erkennen wir das es einige Unterschiede gibt Action und sports machen jedoch weiterhin einen Grosteil des Markts aus.

Nun schauen wir uns die Unterscheide in den Regionen an.

Regionale Unterschiede der Genres

SalesbyGenre

Balkendiagramme

Europa

grouped <- vgsales  %>% 
  group_by(Genre) %>% 
  summarize(sum(EU_Sales))  %>%
rename(
    Global_Sales = "sum(EU_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Genre,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="Sales by Genre (EU)"
           ,colors = myPalette) %>% 
  layout(title="Sales by Genre (EU)",
         xaxis = ax,
         yaxis = ay
         )

Nord-Amerika

grouped <- vgsales  %>% 
  group_by(Genre) %>% 
  summarize(sum(NA_Sales))  %>%
rename(
    Global_Sales = "sum(NA_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Genre,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="Sales by Genre (NA)"
           ,colors = myPalette) %>% 
  layout(title="Sales by Genre (NA)",
         xaxis = ax,
         yaxis = ay
         )

Japan

grouped <- vgsales  %>% 
  group_by(Genre) %>% 
  summarize(sum(JP_Sales))  %>%
rename(
    Global_Sales = "sum(JP_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales"

)

ordered%>%
  plot_ly() %>% 
  add_bars(x=~fct_reorder(Genre,Global_Sales, .desc="true"),
           y=~Global_Sales,
           name="Sales by Genre (JP)" ,colors = myPalette) %>% 
  layout(title="Sales by Genre (JP)",
         xaxis = ax,
         yaxis = ay
         )

Kreisdiagramme

Europa

grouped <- vgsales  %>% 
  group_by(Genre) %>% 
  summarize(sum(EU_Sales))  %>%
rename(
    Global_Sales = "sum(EU_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales (in mio)"

)


ordered%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Genre,
           name="Sales by Genre (EU)" ,colors = myPalette) %>% 
  layout(title="Sales by Genre (EU)",
         xaxis = ax,
         yaxis = ay
        )

Nord-Amerika

grouped <- vgsales  %>% 
  group_by(Genre) %>% 
  summarize(sum(NA_Sales))  %>%
rename(
    Global_Sales = "sum(NA_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales (in mio)"

)

ordered%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Genre,
           name="Sales by Genre (NA)",colors = myPalette) %>% 
  layout(title="Sales by Genre (NA)",
         xaxis = ax,
         yaxis = ay
        )

Japan

grouped <- vgsales  %>% 
  group_by(Genre) %>% 
  summarize(sum(JP_Sales))  %>%
rename(
    Global_Sales = "sum(JP_Sales)"
    )
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales"

)

ordered%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Genre,
           name="Sales by Genre (JP)" ,colors = myPalette) %>% 
  layout(title="Sales by Genre (JP)",
         xaxis = ax,
         yaxis = ay
        )

Hierbei erkennen wir wieder einmal das US und EU recht ähnlich sind wohingegen Japan ein gänzlich anderes Genreshema erkennen lässt. In Japan dominiert Role-Playing welches sich in EU und US nur auf platz 7 befindet.

Nun schauen wir uns die Genreentwicklung über die Jahre an. Hierzu verwenden wir LinePlots.

Genreentwicklung im laufe der Jahre nach anzahl

Genre Amount per Year

Lines

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(Anzahl =n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,Anzahl)
ax <- list(
  title = "Year"
)

ay <- list(
  title = "Anzahl"

)

filtered %>%
plot_ly() %>% 
  add_lines(x=~Year,
           y=~Anzahl, color=~Genre,colors = myPalette)

Filled Lines

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(Anzahl =n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,Anzahl)
ax <- list(
  title = "Year"
)

ay <- list(
  title = "Anzahl"

)


filtered %>%
plot_ly(x = ~Year, y = ~Anzahl, type = 'scatter', mode = 'none', fill = 'tozeroy',color = ~Genre ,colors = myPalette)%>% 
  layout(title="Amount by Genre from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Stacked Lines

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(Anzahl =n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,Anzahl)
ax <- list(
  title = "Year"
)

ay <- list(
  title = "Anzahl"

)


filtered %>%
plot_ly(x = ~Year, y = ~Anzahl, type = 'scatter', mode = 'none', stackgroup = 'one',color = ~Genre, colors = myPalette)%>% 
  layout(title="Amount by Genre from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Genreshift %

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(Anzahl =n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,Anzahl)
ax <- list(
  title = "Year"
)

ay <- list(
  title = "Percent %"

)


filtered %>%
plot_ly(x = ~Year, y = ~Anzahl, type = 'scatter', mode = 'none', stackgroup = 'one',groupnorm = 'percent',color = ~Genre ,colors = myPalette)%>% 
  layout(title="Marketamount genreshift in % from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Hierbei zu erkennen ist Obwohl die Anzahl der Jährlichen Spielereleases über die Jahre hinweg stetig wächst bleiben die Meisten Genres ähnlich viel vertreten. Auffällig sind hierbei Strategy-Games die erst 1991 das erste mal auftretem Seitdem obwohl sie Leicht an Marketshare verlieren grob gleich bleiben. Außerdem sind Action Games die Spiele mit der wohl größten volatilität. Sind es 1982 noch fast 50% der Gamereleases fällt deren aufkommen 1084 schon auf nur noch knapp 10% ab und 1986 steigt der Wert wieder auf fast 30%. Dieser Trend setzt sich fort bis 1996 ab welchem Zeitpunkt sich Action Games von 3.6% über die Jahre bis 2016 bis 35% entwickeln.

Genreentwicklung im laufe der Jahre nach Verkaufszahlen

Schauen wir uns an wie sich die verkäufe entwickelt haben.

Sales Amount per Year

Lines

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,gr_sum)

ax <- list(
  title = "Year"
)

ay <- list(
  title = "Global_Sales"

)

filtered %>%
plot_ly() %>% 
  add_lines(x=~Year,
           y=~gr_sum, color=~Genre ,colors = myPalette) %>% 
  layout(title="Sales by Genre from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Filled Lines

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,gr_sum)

ax <- list(
  title = "Year"
)

ay <- list(
  title = "Global_Sales"

)


filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', fill = 'tozeroy',color = ~Genre ,colors = myPalette) %>% 
  layout(title="Sales by Genre from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Stacked Lines

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,gr_sum)

ax <- list(
  title = "Year"
)

ay <- list(
  title = "Global_Sales"

)


filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', stackgroup = 'one',color = ~Genre ,colors = myPalette)%>% 
  layout(title="Sales by Genre from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Genreshift %

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,gr_sum)

ax <- list(
  title = "Year"
)

ay <- list(
  title = "Percent %"

)


filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', stackgroup = 'one',groupnorm = 'percent',color = ~Genre ,colors = myPalette)%>% 
  layout(title="Marketshare genreshift in % from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Wie zu erwarten lässt sich hier ein Großer overlap zu den Anzahl der Gamereleases feststellen.

Genreentwicklung im laufe der Jahre nach Verkaufszahlen pro Spiel

Nun stellt sich die Frage hab sich die Verkäufe ähnlich der anzahl der GameReleases entwickelt?

Sales per Game per Year

Lines

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(gr_sum = sum(Global_Sales)/n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
  title = "Year"
)

ay <- list(
  title = "Sales per Game"

)

filtered %>%
plot_ly() %>% 
  add_lines(x=~Year,
           y=~gr_sum, color=~Genre ,colors = myPalette) %>% 
  layout(title="Sales per Game by Genre from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Filled Lines

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(gr_sum = sum(Global_Sales)/n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
  title = "Year"
)

ay <- list(
  title = "Sales per Game"

)

filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', fill = 'tozeroy',color = ~Genre ,colors = myPalette) %>% 
  layout(title="Sales per Game by Genre from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Stacked Lines

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(gr_sum = sum(Global_Sales)/n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
  title = "Year"
)

ay <- list(
  title = "Sales per Game"

)

filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', stackgroup = 'one',color = ~Genre, colors = myPalette)%>% 
  layout(title="Sales per Game by Genre from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Genreshift %

grouped <- vgsales  %>%                                 
  group_by(Year, Genre) %>%
  dplyr::summarize(gr_sum = sum(Global_Sales)/n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
  as.data.frame()


filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
  title = "Year"
)

ay <- list(
  title = "Percent %"

)
filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', stackgroup = 'one',groupnorm = 'percent',color = ~Genre, colors = myPalette)%>% 
  layout(title="Marketshare in Sales per Game by Genre from 1980-2016",
         xaxis = ax,
         yaxis = ay
         )

Auch hier ist wie erwartet die Entwicklung Prozentual ähnlich sind. Auffällig ist jedoch das Shooter trotz ihrer geringen Vertretung in der Prozentualen Verteilung 1984 sowie 2014,2015 und 2016 die Nase Vorne haben. Platform Games haben 1985,1988 und 1990 die Nase Vorne. Die Hochzeit der Puzzle Games sind unangefochten 1988 mit dem Weltweitbekannten und auf Platz 6 der meistverkauften videospiele: Tetris. Ein genauerer vergleich der Ausschläge mit den dementsprechenden Videospielen wäre hier wünschenswert würde aber das Ausmaß dieser Arbeit sprengen.

Nun stellt sich die Frage wie es mit Genres pro publisher aussieht? Gibt es hier Publisher die verschiedene Genres bevorzugen bzw. deren Bestseller sich in bestimmten Genres Tummeln?

Hierzu verwenden wir ein stacked Bar-Plot. Dazu filtern wir die top 10 Publishern aka Publisher mit min 116 mio in Sales. Dies entfernt natürlich einiges an Information allerdings geht sonst einiges an Übersichtlichkeit verloren. Zusätzlich werden erneut die Worte “Entertainment”, “Interactive”, “Game”, “Games” und “Studios” entfernt.

Genreverteilung nach Publisher

Genre by Publisher

Sales

grouped <- vgsales  %>% 
  group_by(Publisher,Genre) %>% 
  summarize(sum(Global_Sales))  %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) 

PublisherSales <- grouped %>% 
  group_by(Publisher) %>% 
  summarize(sum(Global_Sales)) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% filter(Global_Sales>300)

grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)

grouped$Global_Sales<-as_vector(grouped$Global_Sales)

grouped$Publisher <-str_remove_all(grouped$Publisher, "Entertainment")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Interactive")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Studios")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Games")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Game")

  

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales"

)

grouped%>%
  plot_ly(x=~Publisher,
           y=~Global_Sales,
            type='bar',
           color=~Genre, colors = myPalette)  %>% 
  layout(title="Sales by Genre By Publisher",
         xaxis = ax,
         yaxis = ay,
         barmode = 'stack'
         )

Amount

grouped <- vgsales  %>% 
  group_by(Publisher,Genre) %>% 
  summarize(Anzahl =n(),sum(Global_Sales))  %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    )

PublisherSales <- grouped %>% 
  group_by(Publisher) %>% 
  summarize(sum(Global_Sales)) %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% filter(Global_Sales>300)



grouped <- grouped  %>% filter(Publisher %in% PublisherSales$Publisher)

grouped$Global_Sales<-as_vector(grouped$Global_Sales)
grouped$Publisher <-str_remove_all(grouped$Publisher, "Entertainment")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Interactive")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Studios")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Games")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Game")



ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Amount"

)

grouped%>%
  plot_ly(x=~Publisher,
           y=~Anzahl,
            type='bar',
           color=~Genre ,colors = myPalette)  %>% 
  layout(title="Amount by Genre By Publisher",
         xaxis = ax,
         yaxis = ay,
         barmode = 'stack'
         )

Bei dem vergleich der Werte ist hier zu bemerken, dass die meisten Publisher Hierbei sich mit der Anzahl der Spiele und den Sales gut abdecken. Die auffälligsten diskrepanzen sind hierbei EA mit dem Sports Genre und ihren järlich releasten Spielen FiFa/NBA2k etc. sowie Nintendo mit der Platformreihe Super Mario. Schauen wir uns diese Beiden Firmen Noch einmal im Detail an.

Hierzu verwenden wir wieder die Bar/Pie chart Combo die uns Bereits aus vorderen Teilen der Ausarbeitung bekannt sind.

Genreverteilung für Publisher Electronic Arts

Genre für Electronic Arts

Balkendiagramme

Sales

grouped <- vgsales  %>% 
  group_by(Publisher,Genre) %>% 
  summarize(sum(Global_Sales))  %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% 
  filter(Publisher == "Electronic Arts")


grouped$Global_Sales<-as_vector(grouped$Global_Sales)

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales"

)

grouped%>%
  plot_ly() %>% add_bars(x=~Genre,
           y=~Global_Sales,
           color=~Genre ,colors = myPalette)  %>% 
  layout(title="Sales by Genre for Electronic Arts",
         xaxis = ax,
         yaxis = ay,
         barmode = 'stack'
         )

Amount

grouped <- vgsales  %>% 
  group_by(Publisher,Genre) %>% 
  summarize(Anzahl =n())  %>% 
  filter(Publisher == "Electronic Arts")


ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Amount"

)


grouped%>%
  plot_ly() %>% add_bars(x=~Genre,
           y=~Anzahl,
           color=~Genre ,colors = myPalette)  %>% 
  layout(title="Amount by Genre for Electronic Arts ",
         xaxis = ax,
         yaxis = ay,
         barmode = 'stack'
         )

Kreisdiagramme

Sales

grouped <- vgsales  %>% 
  group_by(Publisher,Genre) %>% 
  summarize(sum(Global_Sales))  %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% 
  filter(Publisher == "Electronic Arts")


grouped$Global_Sales<-as_vector(grouped$Global_Sales)

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales"

)

grouped%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Genre,textinfo='label+percent',sort = FALSE,
           name="Sales by Genre for Electronic Arts" ,colors = myPalette) %>% 
  layout(title="Sales by Genre for Electronic Arts",
         xaxis = ax,
         yaxis = ay
         )

Amount

grouped <- vgsales  %>% 
  group_by(Publisher,Genre) %>% 
  summarize(Anzahl =n())  %>% 
  filter(Publisher == "Electronic Arts")


ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Amount"

)

grouped%>%
  plot_ly() %>% 
  add_pie(values =~Anzahl,labels=~Genre,textinfo='label+percent',sort = FALSE,
           name="Amount by Genre for Electronic Arts" ,colors = myPalette) %>% 
  layout(title="Amount by Genre for Electronic Arts",
         xaxis = ax,
         yaxis = ay
         )

Schauen wir uns EA hier im Detail an fällt allerdings auf das die Diskrepanz zwischen Sales und Anzahl der Gamereleases für EA bei Sports gar nicht so groß ist (41.5% vs 43.2%). Die größeren diskrepanzen sind hier Shooter welches nur 10% der Gamereleases sind aber gut 15% der Sales und Action mit 13.5% der Gamereleases und 10.4% der Sales.

Genreverteilung für Nintendo

Schauen wir uns nun Nintendo an.

Genre für Nintendo

Balkendiagramme

Sales

grouped <- vgsales  %>% 
  group_by(Publisher,Genre) %>% 
  summarize(sum(Global_Sales))  %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% 
  filter(Publisher == "Nintendo")


grouped$Global_Sales<-as_vector(grouped$Global_Sales)

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales"

)

grouped%>%
  plot_ly() %>% add_bars(x=~Genre,
           y=~Global_Sales,
           color=~Genre ,colors = myPalette)  %>% 
  layout(title="Sales by Genre for Nintendo",
         xaxis = ax,
         yaxis = ay,
         barmode = 'stack'
         )

Amount

grouped <- vgsales  %>% 
  group_by(Publisher,Genre) %>% 
  summarize(Anzahl =n())  %>% 
  filter(Publisher == "Nintendo")


grouped$Global_Sales<-as_vector(grouped$Global_Sales)
## Warning: Unknown or uninitialised column: `Global_Sales`.
ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Amount"

)



grouped%>%
  plot_ly() %>% add_bars(x=~Genre,
           y=~Anzahl,
           color=~Genre ,colors = myPalette)  %>% 
  layout(title="Amount by Genre for Nintendo",
         xaxis = ax,
         yaxis = ay,
         barmode = 'stack'
         )

Kreisdiagramme

Sales

grouped <- vgsales  %>% 
  group_by(Publisher,Genre) %>% 
  summarize(sum(Global_Sales))  %>%
rename(
    Global_Sales = "sum(Global_Sales)"
    ) %>% 
  filter(Publisher == "Nintendo")


grouped$Global_Sales<-as_vector(grouped$Global_Sales)

ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Sales"

)

grouped%>%
  plot_ly() %>% 
  add_pie(values =~Global_Sales,labels=~Genre,textinfo='label+percent',sort = FALSE,
           name="Sales by Genre for Nintendo" ,colors = myPalette) %>% 
  layout(title="Sales by Genre for Nintendo",
         xaxis = ax,
         yaxis = ay
         )

Amount

grouped <- vgsales  %>% 
  group_by(Publisher,Genre) %>% 
  summarize(Anzahl =n())  %>% 
  filter(Publisher == "Nintendo")


ax <- list(
  title = "Genre"
)

ay <- list(
  title = "Amount"

)

grouped%>%
  plot_ly() %>% 
  add_pie(values =~Anzahl,labels=~Genre,textinfo='label+percent',sort = FALSE,
           name="Amount by Genre for Nintendo" ,colors = myPalette) %>% 
  layout(title="Amount by Genre for Nintendo",
         xaxis = ax,
         yaxis = ay
         )

Bei Nintendo zu erkennen ist hier, dass Platform spiele ein Kassenchlager sind. Nehmen diese nur 16% der spielereleases ein so bringen sie dennoch 24% der Sales ein. Gleiches Gilt für Sport games. 8% gegenüber 12%. Action (11% vs 7%), Misc (14% vs 10%) und Puzzle Games (10.5% vs 7%) sind jedoch nicht so erfolgreich.

Ausblick in die Zukunft

Ein Vergleich der Ausschläge mit den dementsprechenden Videospielen.

Eine genaue Analyse der Gamesales pro jahr (aka tetrist 1950 30 mal testris 2015 300000 mal) geben die daten nicht her.

eine anylse der Coronapandemie veränderungen (geben die daten nicht her)

Platformanalyse: Verkauften Spiele pro Spiel pro platform

Aufgetretene Probleme

Colorbrewer wird nicht in jeder Grafik akzeptiert

Sales pro Game analyse rechnet nicht spiele pro platform zusammen

Mobilegames fehlen im datensatz umfast nur 16k game von weltweit mehr als 3.3 mio https://www.statista.com/statistics/293304/number-video-gamers/#:~:text=In%20total%2C%20there%20were%20an,billion%20gamers%20across%20the%20globe.

oft doppelter code durch verwendung in mehreren Diagrammen mit nur leichten änderungen

Platformanalyse nach region Vergleich in anzahl der Spiele nicht möglich da herkunftsland des spiels nicht klar

Regionaler vergleich aufgrund von unterschiedlichen enwohner zahlen nur prozentual nicht absolut möglich

Platform ranking per year filter nach total sales wäre besser zu besseren übersicht.

 

Created by Florian Reichle

flre0005@hs-kl.de